home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU10.ARC / MSD - $帕13 < prev    next >
Encoding:
Text File  |  2019-04-13  |  4.4 KB  |  87 lines

  1. ║CM:MSD - $┼┴13
  2. ║LM21:RM70:PP66:PG60
  3. ║P#104
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6.        ├╬╘┴├╘   ╔NCREMENT ACTIVE FILE COUNT BY DRIVE
  7.  
  8. $┼┴13           ┴╬─ .┴ WITH $01 TO GET THE DRIVE NUMBER.
  9. $┼┴15           ╘RANSFER RESULT TO .╪ AND INCREMENT ╘1,╪ [$49,╪] TO COUNT THE ACTIVE FILES FOR THIS DRIVE.
  10. $┼┴18           ╥ETURN.
  11.  
  12.  
  13.  
  14.        ├╚╦╫╨╙   ├HECK WRITE PROTECT STATUS
  15.  
  16. $┼┴19           ╙AVE .╪ (DRIVE SPECIFICATION) IN ─╥╓╬╒═ [$54].
  17. $┼┴1┬           ╔F ╫╨╙╫,╪ [$4├2─,╪] IS ZERO, THE WRITE PROTECT FLAG HAS NOT CHANGED WHICH INDICATES THE DISK HAS NOT BEEN REMOVED FROM THE DRIVE SO RETURN.
  18. $┼┴20           ╧THERWISE, THE DISK HAS BEEN REMOVED OR SWAPPED SO JUMP TO ├╠─├╚╬ [$─3┬┴] TO CLOSE ALL FILES FOR THIS DRIVE.
  19.  
  20.  
  21.  
  22.        ╙╘─╔╥    ╙TART LOADING THE DIRECTORY
  23.  
  24. $┼┴23
  25.  
  26.  
  27.  
  28.        ═╧╓┬╒╞   ╘RANSFER FILE NAME TO LISTING BUFFER
  29.  
  30. $┼┴─┼
  31.  
  32.  
  33.  
  34.        ╟┼╘─╔╥   ╟ET CHARACTER FOR DIRECTORY LOAD
  35.  
  36. $┼┴┼├
  37.  
  38.  
  39.  
  40.        ╓┴╠─┴╘   ╓ALIDATE A DISK
  41.  
  42. $┼┬09           ╩╙╥ ╙╔═╨╥╙ [$├106] TO PARSE THE STRING AND GET THE DRIVE NUMBER.
  43. $┼┬0├           ╩╙╥ ╔╬╔╘─╥ [$─0╞9] TO INITIALIZE THE DRIVE.
  44. $┼┬0╞           ╙ET ╫┬┴═ [$┬─] TO $40 TO INDICATE THE ┬┴═ NEEDS TO BE WRITTEN OUT.
  45. $┼┬13           ╩╙╥ ╬┼╫═┴╨ [$┼├46] TO BUILD A NEW ┬┴═ IN ╥┴═.
  46. $┼┬16           ╙ET ─┼╠╔╬─ [$┴╞] TO ZERO TO TELL ╙╥├╚╙╘ TO LOOK FOR A NON-DELETED DIRECTORY ENTRY.
  47. $┼┬1┴           ╩╙╥ ╙╥├╚╙╘ [$├4┬┼] TO FIND THE FIRST DIRECTORY ENTRY.
  48. $┼┬1─           ╔F AN ENTRY IS FOUND (.┌ = 0), BRANCH TO ╓─25 TO PROCESS IT.
  49. $┼┬1╞  ╓─10     ╙ET ╙┼├╘╧╥ [$56] TO ZERO.
  50. $┼┬23           ╙ET ╘╥┴├╦ [$55] TO ─╔╥╘╥╦ [$╞┼6┬].
  51. $┼┬28           ╩╙╥ ╓═╦┬┴═ [$┼┬67] TO TRACE THROUGH THE DIRECTORY SECTORS AND MARK THOSE IN USE IN THE ┬┴═.
  52. $┼┬2┬           ╙ET ╫┬┴═ [$┬─] TO ZERO TO INDICATE THE ┬┴═ ON THE DISK MATCHES THE ┬┴═ IN ╥┴═.
  53. $┼┬2╞           ╩╙╥ ╙├╥┬┴═ [$┼├91] TO WRITE THE ┬┴═ OUT TO DISK.
  54. ║FP0
  55. $┼┬32           ╘ERMINATE THE COMMAND WITH A JUMP TO         ┼╬─├═─ [$├0├╞].
  56. $┼┬35  ╓─15     ╔NCREMENT .┘ SO IT POINTS TO THE TRACK LINK FOR THIS DIRECTORY ENTRY.
  57. $┼┬36           ╟ET THE TRACK LINK FROM (─╔╥┬╒╞),┘ [($69),┘] AND SAVE IT ON THE STACK.
  58. $┼┬39           ╔NCREMENT .┘ SO IT POINTS TO THE SECTOR LINK, GET THE SECTOR LINK FROM (─╔╥┬╒╞),┘ [($69),┘], AND SAVE IT ON THE STACK.
  59. $┼┬3─           ╙ET .┘ TO $13 SO IT POINTS TO THE SIDE SECTOR LINK.
  60. $┼┬3╞           ╧BTAIN THE SIDE SECTOR TRACK LINK FROM    (─╔╥┬╒╞),┘ [($69),┘] AND IF THIS VALUE IS ZERO, THE FILE IS NOT A RELATIVE FILE SO BRANCH TO ╓─17.
  61. $┼┬43           ╙AVE THE SIDE SECTOR TRACK IN ╘╥┴├╦ [$55].
  62. $┼┬45           ╔NCREMENT .┘ TO POINT TO THE SIDE SECTOR, SECTOR LINK, OBTAIN THE SECTOR FROM (─╔╥┬╒╞),┘ [($69),┘], AND SAVE IT IN ╙┼├╘╧╥ [$56].
  63. $┼┬44┴          ╩╙╥ ╓═╦┬┴═ [$┼┬67] TO TRACE THROUGH THE SIDE SECTORS AND MARK THE ┬┴═ FOR THOSE SECTORS IN USE.
  64. $┼┬4─  ╓─17     ╥ESTORE THE ORIGINAL FILE'S SECTOR LINK FROM THE STACK AND SAVE IT IN ╙┼├╘╧╥ [$56].
  65. $┼┬50           ╥ESTORE THE ORIGINAL FILE'S TRACK LINK FROM THE STACK AND SAVE IT IN ╘╥┴├╦ [$55].
  66. $┼┬53           ╩╙╥ ╓═╦┬┴═ [$┼┬67] TO TRACE THROUGH THE MAIN FILE AND MARK THE ┬┴═ FOR THOSE SECTORS IN USE.
  67. $┼┬56  ╓─20     ╩╙╥ ╙╙╥┼ [$├516] TO FIND THE NEXT DIRECTORY ENTRY.
  68. $┼┬59           ╔F THERE ARE NO MORE ENTRIES (.┌ = 1), BRANCH TO ╓─10 TO FINISH UP.
  69. $┼┬5┬  ╓─25     ╙ET .┘ TO ZERO SO IT POINTS TO THE FILE TYPE AND STATUS BITS FOR THIS DIRECTORY ENTRY.
  70. $┼┬5─           ╧BTAIN THE STATUS BITS FROM (─╔╥┬╒╞),┘ [($69),┘] AND BRANCH TO ╓─15 IF BIT 7 IS SET (INDICATES THE FILE WAS CLOSED PROPERLY).
  71. $┼┬61           ╩╙╥ ─┼╠─╔╥ [$├7┬┬] TO DELETE THIS DIRECTORY ENTRY SINCE IT WAS NOT CLOSED PROPERLY.
  72. $┼┬64           ╩UMP TO ╓─20 TO GET ANOTHER DIRECTORY ENTRY TO PROCESS.
  73.  
  74.  
  75.  
  76.        ╓═╦┬┴═   ╘RACE FILE BY LINKS AND FLAG BLOCKS IN USE
  77.  
  78. $┼┬67           ╩╙╥ ╘╙├╚╦ [$─5├0] TO ENSURE THE TRACK AND SECTOR ARE LEGAL.
  79. $┼┬6┴           ╩╙╥ ╫╒╙┼─ [$┼─01] TO MARK THE TRACK AND SECTOR AS IN USE IN THE ┬┴═.
  80. $┼┬6─           ╩╙╥ ╧╨╬╔╥─ [$─4─┼] TO OPEN THE INTERNAL READ CHANNEL AND READ THE FIRST BLOCK OF THE FILE.
  81. $┼┬70  ═╥╦2     ╙ET .┴ TO ZERO AND ╩╙╥ ╙┼╘╨╬╘ [$─533] TO SET THE BUFFER POINTER TO THE TRACK LINK FOR THE FILE.
  82. $┼┬75           ╩╙╥ ╟┼╘┬┘╘ [$─1╞2] TO GET THE NEXT TRACK AND SAVE IT IN ╘╥┴├╦ [$55].
  83. $┼┬7┴           ╩╙╥ ╟┼╘┬┘╘ [$─1╞2] TO GET THE NEXT SECTOR LINK AND SAVE IT IN ╙┼├╘╧╥ [$56].
  84. $┼┬7╞           ╔F ╘╥┴├╦ [$55] IS NOT ZERO, THERE ARE MORE BLOCKS IN THE FILE SO BRANCH TO ═╥╦1.
  85. $┼┬83           ╩UMP TO ╞╥┼├╚╬ [$─2┼2] TO FREE THE CHANNEL AND RETURN.
  86. $┼┬86  ═╥╦1     ╩╙╥ ╫╒╙┼─ [$┼─01] TO INDICATE THE BLOCK IS IN USE.
  87.